<ResponseField name="id" type="string" >
    The unique identifier of the sink consumer
</ResponseField>
<ResponseField name="name" type="string" >
    The name of the sink consumer
</ResponseField>
<ResponseField name="status" type="string" >
    The current status of the sink consumer (active, disabled, paused)
</ResponseField>
<ResponseField name="database" type="string" >
    The source database for the sink consumer
</ResponseField>
<ResponseField name="source" type="object" >
    The source configuration for the sink consumer. This determines which tables are consumed.

    <Expandable title="source properties">
        <ResponseField name="include_schemas" type="array">
            List of schemas to include, or null to include all
        </ResponseField>
        <ResponseField name="exclude_schemas" type="array">
            List of schemas to exclude, or null to exclude none
        </ResponseField>
        <ResponseField name="include_tables" type="array">
            List of tables to include, or null to include all

            A table name can be specified with schema (e.g. `my-schema.my-table`) or without (e.g. `my-table`) which defaults to schema `public`.
        </ResponseField>
        <ResponseField name="exclude_tables" type="array">
            List of tables to exclude, or null to exclude none

            A table name can be specified with schema (e.g. `my-schema.my-table`) or without (e.g. `my-table`) which defaults to schema `public`.
        </ResponseField>
    </Expandable>
</ResponseField>
<ResponseField name="tables" type="array" >
    Additional configuration for individual tables.

    To configure which tables are consumed, see the `source` field.

    <Expandable title="tables properties">
        <ResponseField name="name" type="string" >
            The name of the table.

            A table name can be specified with schema (e.g. `my-schema.my-table`) or without (e.g. `my-table`) which defaults to schema `public`.
        </ResponseField>
        <ResponseField name="group_column_names" type="array" >
            The column names to group by or `null` to disable grouping
        </ResponseField>
    </Expandable>
</ResponseField>
<ResponseField name="actions" type="array" >
    The database actions to include in the sink (insert, update, delete)
</ResponseField>
<ResponseField name="destination" type="object" >
    The destination configuration for the sink consumer. The shape varies by destination type.
    <Expandable title="destination properties" anyOf={true} >
        <Expandable title="Azure Event Hub properties" >
            <ResponseField name="type" type="string" >
                Must be "azure_event_hub"
            </ResponseField>
            <ResponseField name="namespace" type="string" >
                Event Hub namespace
            </ResponseField>
            <ResponseField name="event_hub_name" type="string" >
                Event Hub name
            </ResponseField>
            <ResponseField name="shared_access_key_name" type="string" >
                Shared access key name
            </ResponseField>
            <ResponseField name="shared_access_key" type="string" >
                Shared access key
            </ResponseField>
        </Expandable>

        <Expandable title="Elasticsearch properties" >
            <ResponseField name="type" type="string" >
                Must be "elasticsearch"
            </ResponseField>
            <ResponseField name="endpoint_url" type="string" >
                Elasticsearch endpoint URL
            </ResponseField>
            <ResponseField name="index_name" type="string" >
                Elasticsearch index name
            </ResponseField>
            <ResponseField name="auth_type" type="string" >
                Authentication type (api_key, basic, bearer)
            </ResponseField>
            <ResponseField name="auth_value" type="string" >
                Authentication value
            </ResponseField>
            <ResponseField name="batch_size" type="integer" >
                Number of documents to batch together (default: 100)
            </ResponseField>
        </Expandable>

        <Expandable title="GCP PubSub properties" >
            <ResponseField name="type" type="string" >
                Must be "gcp_pubsub"
            </ResponseField>
            <ResponseField name="project_id" type="string" >
                GCP project ID
            </ResponseField>
            <ResponseField name="topic_id" type="string" >
                PubSub topic ID
            </ResponseField>
            <ResponseField name="credentials" type="string" >
                Base64-encoded credentials
            </ResponseField>
            <ResponseField name="use_emulator" type="boolean" >
                Whether to use the emulator
            </ResponseField>
            <ResponseField name="emulator_base_url" type="string" >
                Emulator base URL if using emulator
            </ResponseField>
        </Expandable>

        <Expandable title="Webhook properties" >
            <ResponseField name="type" type="string" >
                Must be "webhook"
            </ResponseField>
            <ResponseField name="http_endpoint" type="string" >
                HTTP endpoint name
            </ResponseField>
            <ResponseField name="http_endpoint_path" type="string" >
                HTTP endpoint path
            </ResponseField>
            <ResponseField name="batch" type="boolean" >
                Whether the webhook body [should be wrapped in a list](/reference/sinks/webhooks#request-format) to support batching.
            </ResponseField>
        </Expandable>

        <Expandable title="Kafka properties" >
            <ResponseField name="type" type="string" >
                Must be "kafka"
            </ResponseField>
            <ResponseField name="hosts" type="string" >
                Comma-separated list of Kafka hosts
            </ResponseField>
            <ResponseField name="tls" type="boolean" >
                Whether to use TLS
            </ResponseField>
            <ResponseField name="topic" type="string" >
                Kafka topic name
            </ResponseField>
            <ResponseField name="username" type="string" >
                Optional username for authentication
            </ResponseField>
            <ResponseField name="password" type="string" >
                Optional password for authentication
            </ResponseField>
            <ResponseField name="sasl_mechanism" type="string" >
                Optional SASL mechanism (plain, scram_sha_256, scram_sha_512, aws_msk_iam)
            </ResponseField>
            <ResponseField name="aws_region" type="string" >
                AWS region (required for aws_msk_iam)
            </ResponseField>
            <ResponseField name="aws_access_key_id" type="string" >
                AWS access key ID (required for aws_msk_iam)
            </ResponseField>
            <ResponseField name="aws_secret_access_key" type="string" >
                AWS secret access key (required for aws_msk_iam)
            </ResponseField>
        </Expandable>

        <Expandable title="Kinesis properties" >
            <ResponseField name="type" type="string" >
                Must be "kinesis"
            </ResponseField>
            <ResponseField name="stream_arn" type="string" >
                Kinesis stream ARN
            </ResponseField>
            <ResponseField name="access_key_id" type="string" >
                AWS access key ID
            </ResponseField>
            <ResponseField name="secret_access_key" type="string" >
                AWS secret access key
            </ResponseField>
        </Expandable>

        <Expandable title="Meilisearch properties" >
            <ResponseField name="type" type="string" >
                Must be "meilisearch"
            </ResponseField>
            <ResponseField name="endpoint_url" type="string" >
                Meilisearch endpoint URL
            </ResponseField>
            <ResponseField name="index_name" type="string" >
                Meilisearch index name
            </ResponseField>
            <ResponseField name="primary_key" type="string" >
                Primary key field name (default: "id")
            </ResponseField>
            <ResponseField name="api_key" type="string" >
                Meilisearch API key
            </ResponseField>
            <ResponseField name="batch_size" type="integer" >
                Number of documents to batch together (default: 100)
            </ResponseField>
            <ResponseField name="timeout_seconds" type="integer" >
                Request timeout in seconds (default: 5)
            </ResponseField>
        </Expandable>

        <Expandable title="NATS properties" >
            <ResponseField name="type" type="string" >
                Must be "nats"
            </ResponseField>
            <ResponseField name="host" type="string" >
                NATS host
            </ResponseField>
            <ResponseField name="port" type="integer" >
                NATS port
            </ResponseField>
            <ResponseField name="username" type="string" >
                Optional username for authentication
            </ResponseField>
            <ResponseField name="password" type="string" >
                Optional password for authentication
            </ResponseField>
            <ResponseField name="jwt" type="string" >
                Optional JWT for authentication
            </ResponseField>
            <ResponseField name="nkey_seed" type="string" >
                Optional NKey seed for authentication
            </ResponseField>
            <ResponseField name="tls" type="boolean" >
                Whether to use TLS
            </ResponseField>
        </Expandable>

        <Expandable title="RabbitMQ properties" >
            <ResponseField name="type" type="string" >
                Must be "rabbitmq"
            </ResponseField>
            <ResponseField name="host" type="string" >
                RabbitMQ host
            </ResponseField>
            <ResponseField name="port" type="integer" >
                RabbitMQ port
            </ResponseField>
            <ResponseField name="username" type="string" >
                Username for authentication
            </ResponseField>
            <ResponseField name="password" type="string" >
                Password for authentication
            </ResponseField>
            <ResponseField name="virtual_host" type="string" >
                Virtual host name (default: "/")
            </ResponseField>
            <ResponseField name="tls" type="boolean" >
                Whether to use TLS
            </ResponseField>
            <ResponseField name="exchange" type="string" >
                Exchange name
            </ResponseField>
        </Expandable>

        <Expandable title="Redis Stream properties" >
            <ResponseField name="type" type="string" >
                Must be "redis_stream"
            </ResponseField>
            <ResponseField name="host" type="string" >
                Redis host
            </ResponseField>
            <ResponseField name="port" type="integer" >
                Redis port
            </ResponseField>
            <ResponseField name="stream_key" type="string" >
                Redis stream key
            </ResponseField>
            <ResponseField name="database" type="integer" >
                Redis database number (default: 0)
            </ResponseField>
            <ResponseField name="tls" type="boolean" >
                Whether to use TLS
            </ResponseField>
            <ResponseField name="username" type="string" >
                Optional username for authentication
            </ResponseField>
            <ResponseField name="password" type="string" >
                Optional password for authentication
            </ResponseField>
        </Expandable>

        <Expandable title="Redis String properties" >
            <ResponseField name="type" type="string" >
                Must be "redis_string"
            </ResponseField>
            <ResponseField name="host" type="string" >
                Redis host
            </ResponseField>
            <ResponseField name="port" type="integer" >
                Redis port
            </ResponseField>
            <ResponseField name="database" type="integer" >
                Redis database number (default: 0)
            </ResponseField>
            <ResponseField name="tls" type="boolean" >
                Whether to use TLS
            </ResponseField>
            <ResponseField name="username" type="string" >
                Optional username for authentication
            </ResponseField>
            <ResponseField name="password" type="string" >
                Optional password for authentication
            </ResponseField>
            <ResponseField name="expire_ms" type="integer" >
                Optional TTL in milliseconds for the keys
            </ResponseField>
            <ResponseField name="mode" type="string" >
                Mode of operation (static or dynamic, default: static)
            </ResponseField>
        </Expandable>

        <Expandable title="S2 properties" >
            <ResponseField name="type" type="string" >
                Must be "s2"
            </ResponseField>
            <ResponseField name="basin" type="string" >
                The name of the S2 basin
            </ResponseField>
            <ResponseField name="stream" type="string" >
                The name of the S2 stream
            </ResponseField>
            <ResponseField name="access_token" type="string" >
                The access token for the S2 account associated with the basin and stream
            </ResponseField>
        </Expandable>

        <Expandable title="Sequin Stream properties" >
            <ResponseField name="type" type="string" >
                Must be "sequin_stream"
            </ResponseField>
        </Expandable>

        <Expandable title="SNS properties" >
            <ResponseField name="type" type="string" >
                Must be "sns"
            </ResponseField>
            <ResponseField name="topic_arn" type="string" >
                SNS topic ARN
            </ResponseField>
            <ResponseField name="region" type="string" >
                AWS region
            </ResponseField>
            <ResponseField name="access_key_id" type="string" >
                AWS access key ID
            </ResponseField>
            <ResponseField name="secret_access_key" type="string" >
                AWS secret access key
            </ResponseField>
            <ResponseField name="is_fifo" type="boolean" >
                Whether the topic is a FIFO topic
            </ResponseField>
        </Expandable>

        <Expandable title="SQS properties" >
            <ResponseField name="type" type="string" >
                Must be "sqs"
            </ResponseField>
            <ResponseField name="queue_url" type="string" >
                SQS queue URL
            </ResponseField>
            <ResponseField name="region" type="string" >
                AWS region
            </ResponseField>
            <ResponseField name="access_key_id" type="string" >
                AWS access key ID
            </ResponseField>
            <ResponseField name="secret_access_key" type="string" >
                AWS secret access key
            </ResponseField>
            <ResponseField name="is_fifo" type="boolean" >
                Whether the queue is a FIFO queue
            </ResponseField>
        </Expandable>

        <Expandable title="Typesense properties" >
            <ResponseField name="type" type="string" >
                Must be "typesense"
            </ResponseField>
            <ResponseField name="endpoint_url" type="string" >
                Typesense endpoint URL
            </ResponseField>
            <ResponseField name="collection_name" type="string" >
                Typesense collection name
            </ResponseField>
            <ResponseField name="api_key" type="string" >
                Typesense API key
            </ResponseField>
            <ResponseField name="batch_size" type="integer" >
                Number of documents to batch together (default: 100)
            </ResponseField>
            <ResponseField name="timeout_seconds" type="integer" >
                Request timeout in seconds (default: 5)
            </ResponseField>
        </Expandable>
    </Expandable>
</ResponseField>
<ResponseField name="filter" type="string" >
    The [filter function](/reference/filters) for the sink consumer
</ResponseField>
<ResponseField name="transform" type="string" >
    The [transform function](/reference/transforms) for the sink consumer
</ResponseField>
<ResponseField name="routing" type="string" >
    The [routing function](/reference/routing) for the sink consumer
</ResponseField>
<ResponseField name="enrichment" type="string" >
    The [enrichment function](/reference/enrichment) for the sink consumer
</ResponseField>
<ResponseField name="message_grouping" type="boolean" >
    Whether message grouping is enabled for delivery ordering

    See [message grouping and ordering](/reference/sinks/overview#message-grouping-and-ordering) for more details.
</ResponseField>
<ResponseField name="max_retry_count" type="integer" >
    The maximum number of times a message will be retried if delivery fails
</ResponseField>
<ResponseField name="annotations" type="object" >
    User-defined annotations for the sink consumer
</ResponseField>
<ResponseField name="active_backfills" type="array" >
    Array of active backfill IDs
</ResponseField>
<ResponseField name="batch_size" type="integer" >
    Number of records to batch together (1-1000)
</ResponseField>
<ResponseField name="load_shedding_policy" type="string" >
    Determines how Sequin handles overload when sink consumers can't keep up with incoming messages
</ResponseField>
<ResponseField name="timestamp_format" type="string" >
    The format of the timestamp in the source data
</ResponseField>
<ResponseField name="health" type="object" >
    Health status information for the sink consumer
    <Expandable title="health properties">
        <ResponseField name="name" type="string">
            Name of the health check
        </ResponseField>
        <ResponseField name="status" type="string">
            Overall health status
        </ResponseField>
        <ResponseField name="checks" type="array">
            Array of individual health checks
        </ResponseField>
    </Expandable>
</ResponseField>
